import { getLyric } from 'api/lyric';
import {ERR_OK} from 'api/config';
import {Base64} from 'js-base64'
// 类,代码集中处理,扩展性好
export default class Song{
	constructor({id,mid,singer,name,album,duration,image,url}){
		this.id=id;
		this.mid=mid;
		this.singer=singer;
		this.name=name;
		this.album=album;
		this.duration=duration;
		this.image=image;
		this.url=url
	}
	getLyric(){
		if(this.lyric){
			return Promise.resolve(this.lyric)
		}
		return new Promise((resolve,reject)=>{
		getLyric(this.mid).then((res)=>{
				if(res.retcode===ERR_OK){
				this.lyric=Base64.decode(res.lyric); 
				resolve(this.lyric)
			}else{
				reject('no lyric')
			}	
		})
		})

	}
}
// 给类扩展工厂方法,
export function createSong(musicData){
	return new Song({
	id: musicData.songid,
    mid: musicData.songmid,
    singer: filterSinger(musicData.singer),
    name: musicData.songname,
    album: musicData.albumname,
    duration: musicData.interval,
    image: `https://y.gtimg.cn/music/photo_new/T002R300x300M000${musicData.albummid}.jpg?max_age=2592000`,
    // 歌源url
    url: `http://thirdparty.gtimg.com/C100${musicData.songmid}.m4a?fromtag=38`	
	})
}
 function filterSinger(singer){
	let ret=[];
	if(!singer){
		return '未知'
	}
	singer.forEach((e)=>{
		ret.push(e.name)
	})
	return ret.join('/')
}